package iface.aplicativo.integracao.dao;

import iface.aplicativo.negocio.entidade.Veiculo;
import iface.arquitetura.comum.string.UtilString;
import iface.arquitetura.integracao.HibernateDAOAbstrato;

import java.util.Collection;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;

@Repository
public class VeiculoDAO extends HibernateDAOAbstrato<Veiculo> {

	@SuppressWarnings("unchecked")
	public Collection<Veiculo> consultarVeiculosPorPlaca(final String nrPlaca) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(nrPlaca)) {
			criteria.add(Restrictions
					.ilike("nrPlaca", nrPlaca, MatchMode.START));
		}

		return criteria.list();
	}

	@SuppressWarnings("unchecked")
	public Collection<Veiculo> consultarVeiculosVendaPorPlaca(
			final String nrPlaca) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(nrPlaca)) {
			criteria.add(Restrictions
					.ilike("nrPlaca", nrPlaca, MatchMode.START));
		}

		return criteria.list();
	}

	public Veiculo consultarVeiculoPorPlaca(final String nrPlaca) {
		Criteria criteria = novoCriteria();

		if (!UtilString.isVazio(nrPlaca)) {
			criteria.add(Restrictions.eq("nrPlaca", nrPlaca).ignoreCase());
		}

		return (Veiculo) criteria.uniqueResult();
	}

}
